{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Simple Convolutional Autoencoder\n",
    "# Code by GunhoChoi\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.utils as utils\n",
    "from torch.autograd import Variable\n",
    "import torchvision.datasets as dset\n",
    "import torchvision.transforms as transforms\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Files already downloaded\n",
      "Files already downloaded\n"
     ]
    }
   ],
   "source": [
    "# Set Hyperparameters\n",
    "\n",
    "epoch = 100\n",
    "batch_size =100\n",
    "learning_rate = 0.001\n",
    "\n",
    "# Download Data\n",
    "\n",
    "mnist_train = dset.MNIST(\"./\", train=True, transform=transforms.ToTensor(), target_transform=None, download=True)\n",
    "mnist_test  = dset.MNIST(\"./\", train=False, transform=transforms.ToTensor(), target_transform=None, download=True)\n",
    "\n",
    "# Set Data Loader(input pipeline)\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(dataset=mnist_train,batch_size=batch_size,shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Encoder \n",
    "# torch.nn.Conv2d(in_channels, out_channels, kernel_size,\n",
    "#                 stride=1, padding=0, dilation=1,\n",
    "#                 groups=1, bias=True)\n",
    "# batch x 1 x 28 x 28 -> batch x 512\n",
    "\n",
    "class Encoder(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Encoder,self).__init__()\n",
    "        self.layer1 = nn.Sequential(\n",
    "                        nn.Conv2d(1,16,3,padding=1),   # batch x 16 x 28 x 28\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(16),\n",
    "                        nn.Conv2d(16,32,3,padding=1),  # batch x 32 x 28 x 28\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(32),\n",
    "                        nn.Conv2d(32,64,3,padding=1),  # batch x 32 x 28 x 28\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(64),\n",
    "                        nn.MaxPool2d(2,2)   # batch x 64 x 14 x 14\n",
    "        )\n",
    "        self.layer2 = nn.Sequential(\n",
    "                        nn.Conv2d(64,128,3,padding=1),  # batch x 64 x 14 x 14\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(128),\n",
    "                        nn.MaxPool2d(2,2),\n",
    "                        nn.Conv2d(128,256,3,padding=1),  # batch x 64 x 7 x 7\n",
    "                        nn.ReLU()\n",
    "        )\n",
    "        \n",
    "                \n",
    "    def forward(self,x):\n",
    "        out = self.layer1(x)\n",
    "        out = self.layer2(out)\n",
    "        out = out.view(batch_size, -1)\n",
    "        return out\n",
    "    \n",
    "encoder = Encoder().cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# Decoder \n",
    "# torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size,\n",
    "#                          stride=1, padding=0, output_padding=0,\n",
    "#                          groups=1, bias=True)\n",
    "# output_height = (height-1)*stride + kernel_size - 2*padding + output_padding\n",
    "# batch x 512 -> batch x 1 x 28 x 28\n",
    "\n",
    "class Decoder(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Decoder,self).__init__()\n",
    "        self.layer1 = nn.Sequential(\n",
    "                        nn.ConvTranspose2d(256,128,3,2,1,1),\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(128),\n",
    "                        nn.ConvTranspose2d(128,64,3,1,1),\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(64)\n",
    "        )\n",
    "        self.layer2 = nn.Sequential(\n",
    "                        nn.ConvTranspose2d(64,16,3,1,1),\n",
    "                        nn.ReLU(),\n",
    "                        nn.BatchNorm2d(16),\n",
    "                        nn.ConvTranspose2d(16,1,3,2,1,1),\n",
    "                        nn.ReLU()\n",
    "        )\n",
    "        \n",
    "    def forward(self,x):\n",
    "        out = x.view(batch_size,256,7,7)\n",
    "        out = self.layer1(out)\n",
    "        out = self.layer2(out)\n",
    "        return out\n",
    "\n",
    "decoder = Decoder().cuda()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Variable containing:\n",
      "( 0 , 0 ,.,.) = \n",
      "  0.0000  0.0000  0.0000  ...   0.0406  0.0000  0.0000\n",
      "  0.0000  0.1839  0.0000  ...   0.1407  0.0000  0.0000\n",
      "  0.0000  0.1896  0.0178  ...   0.0000  0.0000  0.0067\n",
      "           ...             ⋱             ...          \n",
      "  0.0000  0.0288  0.0262  ...   0.1438  0.0061  0.0000\n",
      "  0.0000  0.0771  0.0000  ...   0.0996  0.0000  0.0000\n",
      "  0.0000  0.0690  0.0000  ...   0.2391  0.0000  0.0361\n",
      "      ⋮  \n",
      "\n",
      "( 1 , 0 ,.,.) = \n",
      "  0.0000  0.0000  0.0587  ...   0.0299  0.0001  0.0000\n",
      "  0.0000  0.0915  0.0000  ...   0.2374  0.0000  0.0000\n",
      "  0.0000  0.0000  0.0155  ...   0.0459  0.0000  0.0460\n",
      "           ...             ⋱             ...          \n",
      "  0.0000  0.0000  0.0912  ...   0.2973  0.0000  0.0320\n",
      "  0.0000  0.0274  0.0361  ...   0.0904  0.0000  0.0016\n",
      "  0.0000  0.0707  0.0642  ...   0.2412  0.0000  0.0589\n",
      "      ⋮  \n",
      "\n",
      "( 2 , 0 ,.,.) = \n",
      "  0.0000  0.0000  0.0928  ...   0.0000  0.0089  0.0000\n",
      "  0.0000  0.0087  0.0000  ...   0.1656  0.0240  0.0000\n",
      "  0.0000  0.0114  0.0000  ...   0.0743  0.0155  0.0000\n",
      "           ...             ⋱             ...          \n",
      "  0.0000  0.0303  0.0000  ...   0.1587  0.0000  0.0772\n",
      "  0.0000  0.0391  0.0527  ...   0.0728  0.0041  0.0000\n",
      "  0.0000  0.1071  0.0000  ...   0.2029  0.0000  0.0547\n",
      "...     \n",
      "      ⋮  \n",
      "\n",
      "(97 , 0 ,.,.) = \n",
      "  0.0000  0.0000  0.0656  ...   0.0344  0.0407  0.0000\n",
      "  0.0000  0.1193  0.0000  ...   0.2244  0.0000  0.0000\n",
      "  0.0000  0.0000  0.1078  ...   0.0000  0.0000  0.0354\n",
      "           ...             ⋱             ...          \n",
      "  0.0000  0.1819  0.0000  ...   0.1752  0.0000  0.1226\n",
      "  0.0000  0.0718  0.0032  ...   0.0445  0.0054  0.0000\n",
      "  0.0000  0.1303  0.0000  ...   0.1596  0.0000  0.0884\n",
      "      ⋮  \n",
      "\n",
      "(98 , 0 ,.,.) = \n",
      "  0.0000  0.0000  0.1397  ...   0.0369  0.0000  0.0000\n",
      "  0.0000  0.0000  0.0000  ...   0.0840  0.0000  0.0929\n",
      "  0.0000  0.0000  0.2094  ...   0.0247  0.0000  0.0000\n",
      "           ...             ⋱             ...          \n",
      "  0.0000  0.0011  0.0000  ...   0.1250  0.0000  0.0077\n",
      "  0.0000  0.0000  0.0338  ...   0.1119  0.0000  0.0000\n",
      "  0.0000  0.0773  0.0000  ...   0.2127  0.0000  0.0609\n",
      "      ⋮  \n",
      "\n",
      "(99 , 0 ,.,.) = \n",
      "  0.0000  0.0000  0.0538  ...   0.0000  0.0000  0.0000\n",
      "  0.0000  0.1627  0.0000  ...   0.3018  0.0000  0.0011\n",
      "  0.0172  0.0000  0.0285  ...   0.0000  0.0017  0.0436\n",
      "           ...             ⋱             ...          \n",
      "  0.0000  0.0000  0.1328  ...   0.1707  0.0000  0.0963\n",
      "  0.0000  0.1435  0.0135  ...   0.0899  0.0000  0.0000\n",
      "  0.0000  0.1691  0.0000  ...   0.2048  0.0000  0.0628\n",
      "[torch.cuda.FloatTensor of size 100x1x28x28 (GPU 0)]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# Check output of autoencoder\n",
    "\n",
    "for image,label in train_loader:\n",
    "    image = Variable(image).cuda()\n",
    "    \n",
    "    output = encoder(image)\n",
    "    output = decoder(output)\n",
    "    print(output)\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# loss func and optimizer\n",
    "# we compute reconstruction after decoder so use Mean Squared Error\n",
    "# In order to use multi parameters with one optimizer,\n",
    "# concat parameters after changing into list\n",
    "\n",
    "parameters = list(encoder.parameters())+ list(decoder.parameters())\n",
    "loss_func = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(parameters, lr=learning_rate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.5/dist-packages/torch/serialization.py:147: UserWarning: Couldn't retrieve source code for container of type Encoder. It won't be checked for correctness upon loading.\n",
      "  \"type \" + obj.__name__ + \". It won't be checked \"\n",
      "/usr/local/lib/python3.5/dist-packages/torch/serialization.py:147: UserWarning: Couldn't retrieve source code for container of type Decoder. It won't be checked for correctness upon loading.\n",
      "  \"type \" + obj.__name__ + \". It won't be checked \"\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Variable containing:\n",
      "1.00000e-03 *\n",
      "  1.3999\n",
      "[torch.cuda.FloatTensor of size 1 (GPU 0)]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# train encoder and decoder\n",
    "# save and load model\n",
    "\n",
    "try:\n",
    "\tencoder, decoder = torch.load('./model/autoencoder.pkl')\n",
    "\tprint(\"\\n--------model restored--------\\n\")\n",
    "except:\n",
    "\tpass\n",
    "\n",
    "for i in range(epoch):\n",
    "    for image,label in train_loader:\n",
    "        image = Variable(image).cuda()\n",
    "        #label = Variable(label.float()).cuda()\n",
    "        optimizer.zero_grad()\n",
    "        output = encoder(image)\n",
    "        output = decoder(output)\n",
    "        loss = loss_func(output,image)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "    if i % 2 == 0:\n",
    "        torch.save([encoder,decoder],'./model/autoencoder.pkl')\n",
    "        print(loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Input Image\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ff9cdec6390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Output Image\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWEAAAFfCAYAAACfj30KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJztnX2sdOtZ1q9nf+/3fc+hsZVzUDS0lKKE0GARbKRSUxOk\nJgUjAQsJFv4wpEAIiUJIiC0QJWJoqkCNRgQagYQPiWBKDxRpsXxViygFKQFbCpRz6Afped9375nZ\ns/fyj9n3vNdcc9/PWrP3zF57Zu5fsrI+5utZ83HNva7nfu6nNE2DJEmSpB92+m5AkiTJNpMinCRJ\n0iMpwkmSJD2SIpwkSdIjKcJJkiQ9kiKcJEnSIynCSZIkPZIinCRJ0iMpwkmSJD2y13cDSinPBfD5\nAN4PYNBva5IkSZbCEYBPAvBU0zQfqd1xZSJcSvkaAP8EwJMA/jeAr2ua5n84d/18AD+0qnYkSZL0\nyJcD+OHaHVZiR5RSvhTAdwF4HYDPxESEnyqlPM+5+/tX0YYkSZJbwPvb7rAqT/gbAPy7pmne3DTN\n7wD4agAnAL7KuW9aEEmSbCqt+rZ0ES6l7AN4CYCft2PNpFTb2wC8dNmvlyRJss6sIhJ+HoBdAM/I\n8Wcw8YeTJEmSSzJFLUmSpEdWIcIfBnAO4Ak5/gSAp1fwekmSJGvL0kW4aZozAO8G8Ao7Vkopl/u/\nvOzXS5IkWWdWlSf8BgA/UEp5N4B3YZItcQfAD6zo9ZIkSdaSlYhw0zQ/epkT/G2Y2BC/AeDzm6b5\n0CpeL0mSZF0pfU/0WUr5a5jYF0mSJJvGS5qm+fXaHTI7IkmSpEdShJMkSXokRThJkqRHUoSTJEl6\nJEU4SZKkR1KEkyRJeiRFOEmSpEdShJMkSXokRThJkqRHUoSTJEl6JEU4SZKkR1KEkyRJeiRFOEmS\npEdShJMkSXokRThJkqRHUoSTJEl6JEU4SZKkR1KEkyRJeiRFOEmSpEdShJMkSXokRThJkqRHUoST\nJEl6JEU4SZKkR1KEkyRJeiRFOEmSpEdShJMkSXokRThJkqRH9vpuQJLcVkop1eOllJlt75j3HHos\nep02mqapbkfH9HbvWHJzpAgnCeGJqq5LKdjZ2ZmudZv37f6ROHtCbrQJoolnl+Xi4gIXFxfuth7z\nXjfFeXWkCCfJJZ44eiK6s7OD3d3d6aL7epsKd23xiATQE9ZIaM/Pz6drW3ift0spc1G0tS3FePmk\n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\nN16/qUmSJJvHQnnCTdO8kvdLKa8B8KcAXgLgnXTTSdM0H7p265IkSTac63rCz8Ek8v2oHP/yUsqH\nSim/WUr5FxIpJ0mSJJdcecRcmYw3fSOAdzZN89t00w8B+AMAHwTwGQC+E8CLAHzxNdqZJEmykVxn\n2PKbAHwagL/JB5um+Q+0+1ullKcBvK2U8vymad53jddLkiTZOK5kR5RSvgfAKwG8vGmaP2m5+68B\nKABeeJXXSpIk2WQWjoQvBfgLAXxe0zQf6PCQz8TEN24T6yRJkq1jIRG+zPd9NYBXAXhYSnni8qaP\nNU0zKKW8AMCXAXgLgI8AeDGANwB4R9M071les5MkSTaDRSPhr8Ykqn27HP9KAG8GMMIkf/jrAdwF\n8IcAfgzAP79WK5MkSTaURfOEqx5y0zR/BODl12lQkiTJNpG1I5IkSXokRThJkqRHUoSTJEl6JEU4\nSZKkR1KEkyRJeiRFOEmSpEdShJMkSXokRThJkqRHUoSTJEl6JEU4SZKkR1KEkyRJeiRFOEmSpEdS\nhJMkSXokRThJkqRHUoSTJEl6JEU4SZKkR1KEkyRJeiRFOEmSpEdShJMkSXokRThJkqRHUoSTJEl6\n5DaI8FHfDUiSJFkRrfp2G0T4k/puQJIkyYr4pLY7lKZpbqAdlQaU8lwAnw/g/QAGvTYmSZJkORxh\nIsBPNU3zkdodexfhJEmSbeY22BFJkiRbS4pwkiRJj6QIJ0mS9EiKcJIkSY/cShEupXxNKeV9pZTT\nUsqvllL+et9tWgallNeVUi5k+e2+23UVSikvK6X8VCnljy/P41XOfb6tlPLBUspJKeXnSikv7KOt\nV6Ht/Eop3+98lm/pq71dKaV8cynlXaWUZ0spz5RSfrKU8iK5z2Ep5XtLKR8updwvpfx4KeXj+2rz\nInQ8v7fL53ZeSnlTX22+dSJcSvlSAN8F4HUAPhPA/wbwVCnleb02bHm8B8ATAJ68XD633+ZcmbsA\nfgPAawHMpdiUUr4JwNcC+McAPhvAQ0w+x4ObbOQ1qJ7fJT+D2c/y1TfTtGvxMgDfDeBzAPwdAPsA\nfraUckz3eSOAvwfgHwD4WwD+AoCfuOF2XpUu59cA+Pd49Nl9AoBvvOF2Umua5lYtAH4VwL+m/QLg\njwB8Y99tW8K5vQ7Ar/fdjhWc1wWAV8mxDwL4Btp/HMApgC/pu71LOr/vB/Cf+27bEs7teZfn97n0\nOQ0B/H26z6de3uez+27vdc/v8tgvAHhD322z5VZFwqWUfQAvAfDzdqyZvGtvA/DSvtq1ZD7l8hL3\n90sp/6mU8pf6btCyKaU8H5MIgz/HZwH8GjbncwSAl19e8v5OKeVNpZQ/13eDrsBzMIkMP3q5/xIA\ne5j97N4L4ANYz89Oz8/48lLKh0opv1lK+RcSKd8oe329cMDzAOwCeEaOP4PJv/G686sAXgPgvZhc\nAr0ewC+WUj69aZqHPbZr2TyJyRff+xyfvPnmrISfweQS/X0APhnAdwB4SynlpZeBw62nlFIwsR7e\n2TSN9U08CWB0+afJrN1nF5wfAPwQgD/A5GrtMwB8J4AXAfjiG28kbp8IbzRN0zxFu+8ppbwLky/D\nl2ByeZusCU3T/Cjt/lYp5TcB/D6Al2NyubsOvAnAp2F9+yXasPP7m3ywaZr/QLu/VUp5GsDbSinP\nb5rmfTfZQOD2dcx9GMA5JoY58wSAp2++OaulaZqPAfhdAGuTNdCRpzHx8rficwSAyx/vh7Emn2Up\n5XsAvBLAy5um+SDd9DSAg1LK4/KQtfrs5Pz+pOXuv4bJ97WXz+5WiXDTNGcA3g3gFXbs8pLiFQB+\nua92rYpSyj1MLmXbviRrxaUgPY3Zz/FxTHqsN+5zBIBSyicCeC7W4LO8FKgvBPC3m6b5gNz8bgBj\nzH52nwrgLwP4lRtr5DVoOT+Pz8TEPuvls7uNdsQbAPxAKeXdAN4F4BsA3AHwA302ahmUUv4VgJ/G\nxIL4iwC+FZMv/I/02a6rUEq5i0nkUC4PvaCU8mIAH22a5g8x8eK+pZTye5hUyPt2TLJc/ksPzV2Y\n2vldLq/DxBN++vJ+/xKTq5qn5p/t9nCZD/tqAK8C8LCUYlcrH2uaZtA0zbOllO8D8IZSyp8BuA/g\n3wD4paZp3tVPq7vTdn6llBcA+DIAbwHwEQAvxkRz3tE0zXv6aHPv6RlBWslrMfnhnmLy7/tZfbdp\nSef1I5gI0Skmvc0/DOD5fbfriufyeZik/pzL8h/pPq/HpPPjBBNxemHf7V7G+WFSpvCtmAjwAMD/\nA/BvAfz5vtvd4by8czoH8BV0n0NMcm0/jIkI/xiAj++77cs4PwCfCODtAD50+b18Lyadqvf6anOW\nskySJOmRW+UJJ0mSbBspwkmSJD2SIpwkSdIjKcJJkiQ9kiKcJEnSIynCSZIkPZIinCRJ0iMpwkmS\nJD2SIpwkSdIjKcJJkiQ9kiKcJEnSIynCSZIkPfL/AbIq8lf3/yr6AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7ff9cdec63c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "input_img = image[0].cpu()\n",
    "output_img = output[0].cpu()\n",
    "\n",
    "inp = input_img.data.numpy()\n",
    "out = output_img.data.numpy()\n",
    "\n",
    "print(\"Input Image\")\n",
    "plt.imshow(inp[0],cmap='gray')\n",
    "plt.show()\n",
    "\n",
    "print(\"Output Image\")\n",
    "plt.imshow(out[0],cmap=\"gray\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
